package 第八章this;

/*
 *  this关键字
 *   1、this是一个关键字
 *   2、this是一个引用，this是一个变量，this变量中保存了内存地址指向自身，this存储在堆内存java对象内部。
 *   3、每一个对象都有一个this
 *   4、this可以出现在实例方法中，指向当前正在执行动作的对象
 *   5、this不能用在static的方法中
 *
 *
 * */
public class Customer {
    //姓名
    String name;

    public Customer() {

    }
    //不带static关键字的方法
    //顾客购物的行为
    //每一个结果是不一样的，所以这个方法是属于对象级别的行为
    //没有static关键字的方法被称为"实例方法"
    //没有static关键字的变量被称为"实例变量"
    //当一个行为/动作执行的过程中，需要对象的参与，那么这个方法一定要定义为"实例方法"，不带static关键字

    //带有static
    public static void dosome() {

        //编译错误，dosome不是对象调用，是类的调用，name是一个实例变量，访问实例变量需要对象
        //System.out.println(name);

        //如果想要访问name，则需要在方法中创建对象,但是这里访问的是c对象指向的name
        Customer c = new Customer();
        System.out.println(c.name);
    }

    public void shopping() {
        //根据name值来输出
        System.out.println("xxx is shopping");
        //System.out.println(引用.name+"is shopping");
        System.out.println(this.name + '\t' + "is shopping");

    }


}
